The prior art in parametric CAD software provides four major capabilities for an operator of the software, herein referred to as a user. First, it provides the ability to create virtual and accurate three dimensional renderings, or part models, of real world parts. Second, it provides the ability to edit and regenerate those parts with different parameters using a parametric history. Third, it provides the ability to put these parts together to form virtual three dimension renderings of real world products or sub-products, also called assemblies, and subassemblies, respectively, in a process referred to herein as “assembling”. Fourth, it provides the ability to create documents and technical drawings of the parts and assemblies from the virtual part models and virtual assembly models (generally referred to as “models”).
As used herein, the terms “parts,” “components,” and “assemblies” will be used to represent the virtual parts and virtual assemblies as they exist within a computer-aided design (CAD) system (also known as a “CAD system,” “CAD computer system,” or “CAD computer”).
In addition to parts and assemblies, there also exist subassemblies, also referred to as assembled components. For example, a desk assembly could contain a drawer subassembly which contains a set of discrete parts. A subassembly is just an assembly which is contained in another assembly. Each time a part or subassembly is included in an assembly, that instance of the part or assembly is called a “component.” A component has a reference to the part or subassembly which is inserted into the assembly, and has a definition of the position of that part in the assembly. So for a real world assembly that includes the same real world part twice, there is one assembly, one part, and two components. Each component references the same part but has a different position. Any assembly with multiple components could be divided arbitrarily into different subassemblies or could be considered a one level assembly consisting only of components referencing parts.
The prior art in parametric CAD systems and software is reduced to practice in several commercial CAD software products, including the Pro/ENGINEER® design software of Parametric Technology Corporation, the SOLIDWORKS® design software of SolidWorks Corporation, and the Autodesk Inventor® design software of Autodesk, Inc. The prior art has been commercially available in mechanical CAD products in relatively the same form for approximately 20 years and has been used to successfully assemble assemblies ranging from two parts to tens of thousands of parts.
Parametric modeling allows the user to create a model of a part by sequentially applying parametric features such as extrusions, cuts, fillets, shells, etc. Sketch features are used to define the planar profiles or cross sections on planar faces of the model, which can then be used as the basis for a modeling feature such as an extrusion, cut, or revolution. Another special feature type is a reference geometry feature. The most important reference geometry feature is the work-plane feature, which is most often used to define a plane on which the user can create a sketch when no appropriate planar face exists on the model. A modification feature modifies a previously defined modeling, sketch, or reference geometry feature. As the features are applied, a parametric history of the features is recorded. This parametric history can then be re-executed to regenerate the part. The user can also change parameters of the features to regenerate the part with different dimensions. The user can also edit the parametric history itself, by deleting features, inserting features, reordering features, etc., to change the model.
In the process of adding features to the model, the user makes parametric references to the topology of the model being constructed. The parametric reference data structures are quite sophisticated, so that when the parametric history is regenerated with different parameters or the parametric history itself is edited, the local changes in topology that result will have minimal impact on the successful regeneration of downstream features and their parametric references.
There are four powerful strengths of a part parametric history in the prior art. First, it fully describes the creation of a part from scratch in a data structure which is independent from the resultant geometric model. In other words, at the end of modeling, the user not only has the geometric model, but he or she also has a parametric history that can produce that geometric model from scratch. Second, the steps (or parametric feature operations) of the parametric history are originally input by the user, making the parametric history convenient for the user to understand and alter. The parametric history is like a recipe, with the added advantage that the user can back up, alter, and replay the steps. Third, it is fully deterministic, which means that the steps are applied in a consistent order which is apparent to and modifiable by the user and the result is fully determined by those steps. Fourth, features and parametric references are defined in the context of and relative to the prior features of the part. So for example, the same hole on a square face could be dimensioned to any of the four corners or constrained at the center of the face. If the face is resized, the hole will retain the relative positioning as specified by the parametric references the user specified. Thus the user defines a specific “design intent” in the parametric part of his or her choosing. As a consequence of these strengths, parametric part modeling is robust, understandable, and intuitively editable by the user.
In the prior art, there are two distinct environments for the user, a part environment and an assembly environment. The part environment is used to define the shape of the parts. The assembly environment is used to assemble parts and subassemblies into assemblies, and to perform other assembly level operations, like defining movement, exploded views, configurations, etc.
Bottom-up design and top-down design are two distinct methods of designing an assembly. In a pure bottom-up design, the user first designs each of his or her parts independently of each other in the part environment. Then the user puts the parts together in the assembly environment. In a pure top-down design, the user designs his parts all together at once at the same time. In a top-down design, it is natural for one feature to impact several parts, or for one modification feature to modify one part by referencing another part. In a bottom-up design, this is not possible, as only the part being designed is available to be referenced and modified.
When parametric modeling was first introduced in the Pro/ENGINEER® design software in the late 1980s, it was primarily a bottom-up approach. In a bottom-up design, each part is designed on its own in the part environment and has its own independent parametric history. The parametric history specifies only the shape of the part, not its orientation in any assembly that includes it. The user then activates the assembly environment and inserts the parts into the assembly as assembly components. The components are then assembled together in the assembly environment by applying assembly constraints to move the parts into position, such as making two faces coplanar or two axes collinear. Assembling does not change the shape of the parts, just the orientations.
FIG. 1 shows the data structures of a simple bottom-up parametric assembly. Assembly 101 consists of components 102 and 103, each of which is defined by parts 104 and 105 respectively. Parts 104 and 105 each have its own parametric histories 106 and 107 respectively. Assembly 101 also has assembly constraint system 108, comprised of the assembly constraints that define the positions of the assembly components. Each parametric history in each part is a data structure consisting of an ordered sequence of features used for regenerating (or reproducing) the parts. Each feature creates new or modified model geometry. For example, feature 109 produces model geometry 110 in part 104. Each feature also has parametric references to the model geometry used as input to that feature and that that exists at the time the feature was created. For example, arrow 111 represents a parametric reference used by feature 109 to the model geometry 113 that resulted from feature 112.
FIG. 2 shows the regeneration sequence of parametric assembly 101. In step 201, the parametric histories of parts 104 and 105 are regenerated. At this stage, the new shapes of both parts are fully defined. Note that since the parametric histories 106 and 107 are completely independent of each other, parts 104 and 105 could in fact be regenerated in either order and the shapes of the parts would turn out the same. Thus, changing one part in a bottom-up design cannot impact the shape or robustness of regeneration of any other part. Once all the part regeneration is complete, in step 202, the system regenerates the assembly. In a bottom-up design, regenerating (reproducing) the assembly consists of re-solving the assembly constraints 108 based on the new shapes of the parts, which in turn defines new orientations for the assembly components defined from those parts. In step 203, the system updates the display of the assembly based on the new orientations and the new part shapes, and the regeneration is complete. Note that in a bottom-up design, changing the assembly constraints cannot impact the shape of any bottom-up component, only its orientation. As a result of the above-described characteristics, a bottom-up design can be regenerated in one pass, meaning each feature, part, and the assembly constraint system needs only to be exercised (i.e., solved, also referred to as “regenerated”) at most once to regenerate the assembly.
A simple physical illustration is shown in FIGS. 3A and 3B. In FIG. 3A, the user starts with the assembly 101 containing the two parts 104 and 105. Part 104 also has parametric dimension 301, which indicates the height of part 104 is 5 inches. The user then changes (i.e., edits) parametric dimension 301 from five inches to ten inches and instructs the system to regenerate the assembly. This executes in the regeneration sequence described above, and produces the new version of assembly 101 shown in FIG. 3B, with the new shape of part 104 as defined by the new value of dimension 301, and the same relative position of parts 104 and 105, as defined by assembly constraint system 108.
A bottom-up parametric assembly regenerates deterministically, meaning that any two regenerations of the assembly given the same set of input parameters will always produce the same resulting physical model. Parametric regeneration of bottom-up assemblies is deterministic for the following reasons. First, every parametric feature is deterministic. Given the same input, which consists of parametric references to the model at the time the feature is applied (such as a reference to the edge to be filleted), and inputs to the feature (such as the radius of the fillet), the feature will produce the same geometric result. A parametric history of a bottom-up part is just a sequence of these bottom-up parametric features. So the entire parametric part regeneration is also deterministic. The assembly regeneration of a bottom-up assembly consists of exercising (i.e., solving) the assembly constraint system to determine the new orientations of the assembly components based on the new shapes of the parts and their prior orientations. Thus the entire bottom-up assembly regenerates deterministically.
This deterministic nature of the regeneration can be seen graphically in FIG. 1. Each arrow in FIG. 1 represents a dependency. The dependencies all flow in one direction; there are no cycles. This set of relationships can be represented in a graph using the well known mathematical area of study called graph theory. The bottom-up set of relationships shown in FIG. 1 can be converted to a directed graph. A generic directed graph is shown in FIG. 4. Each circle is a node. Each arrow is a dependency relationship between the nodes. Each node represents a process step in the bottom-up regeneration, such as a parametric feature in a part parametric history or the exercising/solving of the assembly constraint system. Each arrow represents a dependency relationship in the bottom-up regeneration. These relationships were also shown in FIG. 1 as arrows. In a directed graph, there are no cycles and the graph can be processed in one pass. This single pass is performed by first processing nodes with no dependencies, and then processing nodes that have had all of their dependencies processed, until all nodes are processed. The numbers inside the circles represent one solution for ordering the nodes to process them in one pass.
Another desirable property of bottom-up parametric design is that if the user changes the input parameters, the model will regenerate as if it has been built from scratch with those changed parameters. This makes any failures or unexpected results from changing parameters understandable to the user and thus generally easy to correct. In fact, the user can step through each node in the regeneration sequence to see exactly why it failed. These attributes make the bottom-up design approach very predictable and robust in the prior art.
However, the major disadvantage of the bottom-up approach is that many parts in an assembly share the same or similar geometry. Since the parts' parametric histories are independent, the user must re-specify the shared geometries in each part to make them match. This results in duplicated information. Since the parametric histories of the parts are independent, if the user decides to change the similar geometries, he or she needs to change them in both parts, and must make sure to change them consistently. This results in extra work and often in errors. One of the greatest strengths of parametric modeling at the part level is that the user need only define his design intent once, and if that design intent is referenced multiple times in the part, the user need only change it once, and all references will update as expected. Unfortunately, the duplication of design intent described above for bottom-up assemblies negates this strength at the assembly level in a bottom-up design.
Over time, commercial parametric products of the prior art introduced various methods of specifying top-down design intent. Most of these methods are available in roughly the same form in each of the commercial products employing the prior art. These prior art methods include: assembly features, assembly-context part features, multi-body parts and derived parts.
The fact that there are so many different methods of designing parts top-down in an assembly is testament to the fact that it is a desirable capability. In fact, most or all of these methods exist concurrently in each of the prior art commercial systems previously mentioned. However, it is also testament to the fact that, unlike bottom-up design, no single effective method of creating parametric top-down design exists in the prior art.
Unfortunately, each of these methods of top-down parametric modeling has drawbacks that make it less robust than the single method of bottom-up parametric modeling. These methods do not regenerate in a deterministic manner, thus making it difficult for the user to understand and to modify the parametric design. These methods produce multiple unsynchronized parametric histories with interdependencies, which cannot be stepped through in the simple manner of a bottom-up part history. Also these methods introduce duplicate ways of creating the same geometry with no real functional differentiation, just different limitations, making the user interaction complex and prone to error. Finally these methods create restrictions and undesirable interactions between the parametric definition of the parts' shapes and the definition of the parts' orientations and movement within the assembly.
It would be desirable if a single method could be devised that allows assemblies to be parametrically designed using both top-down and bottom-up methods in a deterministic manner with the same robustness, simplicity and deterministic behavior with which individual parametric parts can be parametrically designed in the prior art. It would also be desirable if the attachment and movement of parts in the assembly could be specified concurrently and in the same environment as the part shapes are defined.